\section{Cache individual vs Cache partilhado}
\label{sec:benchcachecmp}

Foi realizado um benchmark suplementar comparando a implementação do cursor cliente com cache individual com a implementação do cursor cliente com cache partilhado. Este benchmark tem o intuito de justificar a existência de ambos como solução ao problema, e ainda justificar a decisão de utilizar um \emph{fetch size} de 100\% para o cache partilhado.

O benchmark contemplou apenas o contexto de leitura, pelo que o código executado pelos threads no processo é o mesmo que foi apresentado na listagem \ref{lst:ctx-read}. Decidiu-se assim porque o contexto de leitura é o que mais directamente depende da implementação do cache, e por isso é também o mais relevante para testar.

A ideia principal deste benchmark é verificar o efeito que vários valores de \emph{fetch size} têm em cada implementação do cache. Na medida em que a implementação do cache partilhado por pré-definição carrega todas as linhas da tabela para o cache, isto é, tem um \emph{fetch size} de 100\%, foi necessário realizar uma modificação à implementação, de modo a ser possível trabalhar com um cache partilhado que não escolhe todas as linhas; esta implementação é denominada por $CJDBC_SM$, a implementação do cache individual é denominada por $CJDBC_I$ e a implementação normal do cache partilhado é denominada por $CJDBC_S$.

O procedimento passou por calcular o valor de linhas para o \emph{fetch size} aplicando uma percentagem ao número total de linhas presentes na tabela. As várias percentagens definem os contextos, e são as seguintes: {\bf fetch size 10\%}, {\bf fetch size 20\%}, {\bf fetch size 50\%}, {\bf fetch size 75\%} e {\bf fetch size 100\%}. No entanto, nos resultados e nas discussões utiliza-se a notação mais compacta: {\bf 10}, {\bf 20}, {\bf 50}, {\bf 75} e {\bf 100} para designar os contextos.

O cenário de teste é o mesmo que foi utilizado no benchmark principal: a cada thread é atribuída uma gama de linhas sobre a qual ele deve realizar a tarefa que lhe foi atribuída.
\hfill \\

Os resultados deste benchmark são apresentados na secção \ref{sec:rescachecmp}, e discutidos na secção \ref{sec:discachecmp}.
